from pydantic import BaseModel, Field
from typing import Optional, List


class DraftAddAudioRequest(BaseModel):
    """添加音频到草稿请求模型"""

    # 核心参数
    audio_url: str = Field(..., description="音频文件URL（必填）")
    draft_folder: Optional[str] = Field(None, description="草稿文件夹路径")
    start: float = Field(0, description="音频素材的起始截取时间（秒，默认0）")
    end: Optional[float] = Field(None, description="音频素材的结束截取时间（秒，可选，默认取完整音频长度）")
    target_start: float = Field(0, description="音频在时间线上的起始位置（秒，默认0）")
    draft_id: Optional[str] = Field(None, description="草稿ID（可选，用于指定操作的草稿）")

    # 音频参数
    volume: float = Field(1.0, description="音量大小（默认1.0）")
    track_name: str = Field("audio_main", description="轨道名称（默认\"audio_main\"）")
    speed: float = Field(1.0, description="音频速度（默认1.0，>1加速，<1减速）")

    # 画布参数
    width: int = Field(1080, description="视频宽度（默认1080）")
    height: int = Field(1920, description="视频高度（默认1920）")

    # 时长参数
    duration: Optional[float] = Field(None, description="音频素材的总时长（秒）主动设置可以提升请求速度")

    # 音效参数（JSON示例中额外字段）
    effect_type: Optional[str] = Field(None, description="音效类型")
    effect_params: Optional[List[float]] = Field(None, description="音效参数（可选，根据effect_type设置）")

